﻿using System;
using System.Runtime.Serialization;
using System.ComponentModel;

namespace BrainTechLLC
{
    [Serializable]
    [DataContract]
    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public enum Vertices
    {
        [EnumMember]
        LowerLeftBottom = 0,
        [EnumMember]
        LowerRightBottom = 1,
        [EnumMember]
        TopLeftBottom = 2,
        [EnumMember]
        TopRightBottom = 3,
        [EnumMember]
        LowerLeftTop = 4,
        [EnumMember]
        LowerRightTop = 5,
        [EnumMember]
        TopLeftTop = 6,
        [EnumMember]
        TopRightTop = 7,
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface IOccupySpaceFloat : IHasSizeFloat, IDirectionFloat
    {
        IPositionFloat Position { get; }
        bool Overlaps(IOccupySpaceFloat volumeSpace);
        ILocationFloat this[Vertices v] { get; }
        float XMax { get; }
        float XMin { get; }
        float YMax { get; }
        float YMin { get; }
        float ZMax { get; }
        float ZMin { get; }
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface IOccupySpaceInt : IHasSizeInt, IDirectionInt
    {
        PositionInt Position { get; }
        bool Overlaps(OccupySpaceInt volumeSpace);
        LocationInt this[Vertices v] { get; }
        int XMax { get; }
        int XMin { get; }
        int YMax { get; }
        int YMin { get; }
        int ZMax { get; }
        int ZMin { get; }
    }
}
